Digital still photography and video are becoming increasingly popular applications of personal computers (PCs). A digital camera can be used to generate an image that electronically captures a scene. The image may then be immediately transferred to the PC for further processing and viewing.
The digital camera contains an integrated circuit image sensor that records the scene as an image being an array of data values called pixels (picture elements). To record a scene in color, the image sensor is covered with an array of color filters so that each pixel represents the detected intensity of a particular color in light that is incident upon a corresponding circuit element of the image sensor. An important processing step performed in digital cameras as well as many other imaging devices is downscaling an original image obtained by the image sensor into a smaller size having fewer pixels. Downscaling is also used in digital cameras to allow faster transfer of the downscaled version of the image to the PC, because the downscaled version defines a smaller data set than the original image. Downscaling is also used to improve the performance of video applications where a large number of images must be transferred to the PC in a short period of time. In addition, downscaling lowers the cost of the digital camera by allowing reduced storage requirements for each image.
Conventional techniques for downscaling typically involve three steps. First, each pixel in the original image is converted from having a single color component into one pixel having multiple color components. Doing so more accurately depicts the true color of the scene that has been captured. This is normally done by interpolating the additional color components of a pixel based on the intensities and colors of its neighboring pixels. Next, a conversion is performed upon the multiple component pixels from the color space of the image sensor to a color space that is more suitable for mathematical processing. For instance, although many image sensors provide pixels having red, green, and blue (RGB) color components, these RGB pixels are converted to the well known YUV color space prior to further processing for scaling. Scaling a YUV image is relatively easy from a mathematical point of view, involving the low pass filtering of the Y components of the pixels and then subsampling the Y components. Subsampling may be done, for instance, by selecting one Y component for every four pixels in a square, such that a 2:1 scaling ratio is achieved in both the horizontal and vertical directions of the image.
There are several disadvantages with the above-described conventional scaling approach. For instance, the conversion from pixels having a single component to pixels having multiple components greatly increases the amount of data that must be processed in the subsequent steps of the algorithm, as an image typically contains tens of thousands of pixels. Furthermore, multiple component pixels increase the storage requirements several fold over that required to store the original image having single component pixels. Moreover, the larger storage requirements may significantly increase memory access times if the converted image is too large for storage in cache memory. These factors substantially increase the time required for downscaling the image. This performance penalty becomes particularly important when a rapid series of images corresponding to motion video need to be transferred to the PC. Therefore, there is a need for an improved, more efficient technique for downscaling images which addresses some or all of the above-mentioned disadvantages.